//双向链表
#ifndef RTSP_SERVICE_TWLIST_H
#define RTSP_SERVICE_TWLIST_H

//双向链表节点
typedef struct TWListNode {
    struct  TWListNode   *lastptr;     //上一个节点
    struct  TWListNode   *nextptr;     //下一个节点
    void                 *dataptr;     //数据指针
} TWListNode;

//双向列表
typedef struct TWListHead {
    struct TWListNode *headptr;     //链表
} TWListHead;




/*链表节点初始化*/
extern void TWListNode_init(TWListNode *node, void *data);

/*链表插入节点，把new_node插入到node之后*/
extern void TWListNode_insert(TWListNode *node, TWListNode *new_node);

/*删除链表节点, 把node从链表删除*/
extern void TWListNode_delete(TWListNode *node);






/*链表初始化*/
extern void TWList_init(TWListHead *twlist);

/*链表插入节点*/
extern void TWList_insert_node(TWListHead *twlist, TWListNode *new_node);

/*链表删除节点*/
extern void TWList_delete_node(TWListHead *twlist, TWListNode *node);

//判断列表为空
extern int TWList_is_empty(TWListHead *twlist);

#endif //RTSP_SERVICE_TWLIST_H
